Field programmable gate arrays (FPGAs) are commonly used in many applications that require complex logic functions and are finding increasing application as logic and processing elements. In general, FPGAs are comprised of logic heads/cells arranged in a repeating manner and interconnect structures that route signals between the various cells. FPGAs can either be permanently or temporarily programmed by the user.
Functions are implemented in FPGAs by setting the states of programmable elements such as memory cells that set the functionality of the circuit. Memory cells may be used to programmmably control the composition, configuration, arrangements, and also the interconnections of logic array blocks and logic elements. These memory cells may be implemented with volatile memories, which lose their programmed states upon termination of power to the system, or with nonvolatile memories, which retain their contents upon termination of power. If the programmable elements used are volatile memories, the memory cells must be reconfigured upon system power-up in order to restore the FPGA to the desired programmed and functional state. As integrated circuit technology and semiconductor processing continue to advance there is a need for greater densities and functionality in integrated circuits, which are often determined in large part by the size of the memory cells used to create the circuit.
Many different memory cell technologies may be used including DRAM, SRAM, EPROM, EEPROM, Flash, and antifuse, among others. A technology for storing the configuration information of the FPGA should be compact, power efficient, programmable, reprogrammable, reconfigurable, and nonvolatile, require little additional programming circuitry overhead and generally provide enhancements to the performance and features of FPGA logic modules and interconnections. Further, it is desirable that the memory cells have improved operating characteristics, such as greater device longevity, improved data retention, better transient performance, superior voltage and current attributes, and improvements in other similar attributes.
Traditionally FPGAs have either employed a volatile or a nonvolatile technology, each of which has its own advantages and disadvantages. For example, in the case of power interruption, volatile memory cells need their information to be restored and reconfigured. Volatile memory also has a slower power-up time than nonvolatile technology. Volatile memory also needs higher standby power and typically requires external intelligence for configuration. In contrast, nonvolatile memory cells, which is required or at least highly desirable in many different electronic devices, are not easily reconfigurable, require nonstandard semiconductor processes, have a slow programming or “write” capability, and may not be testable during manufacturing.